The present application is related generally to the field of nonvolatile memory and, more particularly, apparatus and methods of programming memory cells using adjustable charge state level(s).
Non-volatile memory (NVM) is electronic data storage that does not rely on a constant power source to maintain the storage of the data. NVM can be used in memory products such as USB flash drives, SD or microSD cards, MMC or others. NAND and NOR flash memory are types of non-volatile memory. In both instances, memory cells store data in the form of different charge states.
NVM cells can be used as single level cells or multi-level cells. In a single level cell (SLC), in operation, each cell will typically be in either an erased state or a programmed state, with each of those states corresponding to a different charge state. In multi-level cells (MLC), in operation, each cell can be in an erased state, or one of multiple different programmed states, where again each of those states corresponds to a different charge state. Charging the cells to one of the programmed states to represent data can be referred to as programming the cells. In both single and multi-level cells, each of the different charge states (typically including the erased state) of the cell represents a different data value (which is sometimes referred to herein as “datum”).
In NVM there are typically multiple cells arranged to be programmed together which make up a page of cells and multiple pages of cells that are arranged to be erased together which make up a block of cells. Cells are typically programmed in pages of cells and are erased in blocks of cells because of the architecture of the cells or how the cells are electrically connected. NVM cells are typically programmed by using pulses of voltage to increase the charge in the cell to a desired charge state. When a data value is programmed to the cell, pulses of charge can be applied to the cell and the charge on the cell can be read until the desired charge state representing the data value to be programmed to the cell is reached. In many instances, the cells have to be erased before programming, which can involve removing the charge from a block of cells. Programming, erasing and reading NVM cells can involve many additional electronic components such as, for example, processors, registers, buffers, and the like.
Both programming and erasing the cells can cause physical damage to the cells. Over time the damage to the cells can progress to a point where the cells are no longer usable because damaged cells are no longer reliable to store programmed data accurately. The number of times that the cells can be programmed and erased before they are too damaged and should no longer be used can be referred to as program/erase (P/E) lifetime, maximum P/E cycles of the cells or endurance.
Error correction techniques can be used to correct some degree of error when reading data from the cells. The number of errors for a given amount of data can be referred to as an error rate, which is sometimes referred to as the bit-error-rate (BER). Typically, errors up to a certain threshold error rate can be corrected using error correction techniques while errors over the threshold error rate cannot be corrected. When the errors exceed the threshold error rate for a group of cells, the cells can be considered as having reached the end of their operational lifetime.
The foregoing examples of the related art and limitations related therewith are intended to be illustrative and not exclusive. Other limitations of the related art will become apparent to those of skill in the art upon a reading of the specification and a study of the drawings.